#ifndef LIST_H
#define LIST_H

#include "tuple.h"

/** Puntero a sList */
typedef struct sList * List;

/** Celda es un puntero a sNode */
typedef struct sNode * celda;

/** Renombrar la Tupla a elem */
typedef Tuple elem;

/** Crea una lista */
List list_create (void);

/** Verifica si la lista es vacia */
bool list_is_empty (List l);

/** Verifica si el elemnto pertenece a la lista */
bool list_exists_elem (List l, elem e);

/** Agrerga un elemento a la lista */
List list_add_new_elem (List l, elem e);

/** Obtiene el tamaño de una lista */
int list_get_size (List l);

/** Devuelve un elemento de la lista segun su posicion 0 < posicion <= list_get_size */
elem list_get_elem (List l, long int position);

/** Elimina un elemento de la lista */
List list_destroy_elem (List l, elem e);

/** Elimina un elemento de la lista segun su posicion 
List list_destroy_elem_by_p (List l, int position);*/

/** Destruye una lista */
void list_destroy (List l);

#endif

